import { getToken, setToken } from '@/utils/auth.js'
// 导入接口
import { sysLogin, sysProfile, sysUser } from '@/api/user.js'
// 导入静态 动态路由
import { constantRoutes, asyncRoutes } from '@/router/index.js'
// 导入路由
import router from '@/router/index.js'
// 导入
import { resetRouter } from '@/router/index.js'

const state = {
  token: getToken() || '',
  userInfo: ''
}
const mutations = {
  setToken(state, value) {
    state.token = value
    setToken(value)
  },
  setUserInfo(state, value) {
    state.userInfo = value
  },
  // 清除token和用户信息,重置路由(解决切换账号时上一个账号的路由信息没有销毁重置)
  logout(state) {
    state.token = ''
    state.userInfo = ''
    setToken('')
    // 在每一次退出都重置路由
    resetRouter()
  }
}
const actions = {
  async setToken(store, form) {
    const res = await sysLogin(form)
    console.log(res)
    store.commit('setToken', res.data)
  },
  // 获取用户信息
  async getUserInfo({ commit }) {
    // const res = await sysProfile()
    // // 获取用户头像等其他信息
    // const res2 = await sysUser(res.data.userId)
    // // 合并用户信息并存储
    // // 1：对象合并   {...a,...b}
    // // 2: 对象合并   返回值(合并后的目标对象)= object.assign(目标对象，需要合并的对象.....)
    // const res3 = Object.assign({}, res.data, res2.data)
    // // console.log(res3)
    // commit('setUserInfo', res3)
    // // 获取用户信息后匹配相应权限路由数据
    // const newArr = asyncRoutes.filter((item) => {
    //   return res3.roles.menus.includes(item.meta.name)
    // })
    // newArr.push({ path: '*', redirect: '/404', hidden: true })
    // // 将动态匹配的路由通过addRoutes添加就可以了
    // router.addRoutes(newArr)
    // // vuex的actions调用其他模块的mutations方法
    // commit('routes/setRoutes', [...constantRoutes, ...newArr], { root: true })
    // console.log('匹配的路由项', newArr)
  }
}
const getters = {}

export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}
